package com.zzhardy.utils;
import java.io.File;
import java.io.IOException;


/**
 * @Author：Hardy
 * @Date：2019/9/1
 * @Function:
 */
public class UrlUtils {
  
  /**
   * 第二种获取项目的根目录的绝对路径
   *
   * @return 后无斜杠 如:'D:\Demo\DAJ\folder\Gwoth_Note'
   */
  public static String projectUrl() {
    File directory = new File(" ");
    try {
      return directory.getCanonicalPath();
    } catch (IOException e) {
      e.printStackTrace();
      return "";
    }
  }
  
  
  public static String absoluteUrl() {
    Class.class.getClass().getPackage();
    return Class.class.getClass().getResource("/").getPath();
  }
  
  public static String getAbsolutePath() {
    File file=new File("");
    return file.getAbsolutePath();
  }
  
  /**
   *  获取当前项目路径
   * @return
   */
  public static String getAbsolutePathByProperty() {
    return System.getProperty("user.dir");
  }
  
  /**
   *  获取当前类所在路径
   * @param fileType
   * @return
   */
  public static String getPathByFile(Object fileType) {
    return fileType.getClass().getResource("").getPath().substring(1);
  }
  
  /**
   *  获取子项目路径，
   * @param fileType ：fileType 为子项目任意一个项目下的java 实例化后的对象
   * @return
   */
  public static String getMavenChildPath(Object fileType){
    // 父亲项目路径
    String parentPath = UrlUtils.getAbsolutePath();
    // 当前实例化java文件的绝对路径
    String pathByFile = getPathByFile(fileType);
    // 以父项目的绝对路径与子项目的绝对路径来判断此项目是否maven子项目，如果是，则可以直接获取子项目的路径地址，否则返回当前夫项目的地址。
    pathByFile = pathByFile.replaceAll("%20", " ");
    if (pathByFile.indexOf("target") != -1) {
      return pathByFile.substring(0, pathByFile.indexOf("target"));
    }
    return parentPath;
    
    
  }
  
  public static void main(String[] args) {
    System.out.println("获取当前类所在路径:" + UrlUtils.absoluteUrl());
    System.out.println("获取当前类所在路径:" + UrlUtils.getAbsolutePath());
    System.out.println("获取当前类所在路径:" + UrlUtils.getAbsolutePathByProperty());
    UrlUtils urlUtils = new UrlUtils();
    System.out.println("获取当前类所在路径:" + UrlUtils.getPathByFile(urlUtils));
    System.out.println("获取当前java类所在路径:" + UrlUtils.getAbsolutePath());
    System.out.println("获取maven当前访问的class的项目的路径:" + UrlUtils.getMavenChildPath(urlUtils));
  }
}